package com.baizhi.listx;

import java.util.ArrayList;
import java.util.List;

/**
 * 修改集合，遍历集合，删除集合可能存在的问题
 */
public class ListDemo06 {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("百知");
        list.add("Java");
        list.add("Java");
        list.add("王云爽");
        list.add("王云爽");
        list.add("Jim");

        //需求：通过迭代器遍历，删除所有的Java
//        Iterator<String> it = list.iterator();
//        while(it.hasNext()){
//            String str = it.next();
//            if("Java".equals(str)){
//                //list.remove(str); //在迭代器中用集合删除的方法会抛出异常
//                it.remove(); //在迭代器中删除要用迭代器提供的删除方法
//            }
//        }
//        System.out.println(list);

        //用增强for循环遍历并 删除 无法删除 (用增强for循环无法对集合进行操作，只能遍历)
//        for (String s : list) {
//            if("java".equals(s)){
//                list.remove(s);
//            }
//        }
//
//        System.out.println(list);


        //用lambda表达式 遍历并删除 (会抛出异常，无法删除， Lambda不能一遍遍历一遍删除， 只适合遍历)
//        list.forEach(s -> {
//            if("Java".equals(s)){
//                list.remove(s);
//            }
//        });
//
//        System.out.println(list);


        //用普通的for循环遍历并删除
        /*
            [百知,Java, Java, 王云爽, 王云爽, Jim]
            [百知,Java, 王云爽, 王云爽, Jim]
         */
//        for (int i = 0; i < list.size(); i++) {
//            String s = list.get(i);
//            if("Java".equals(s)){
//                list.remove(s);
//                i--;
//            }
//        }
//        System.out.println(list);

        for (int i = list.size()-1; i >=0 ; i--) {
            String s = list.get(i);
            if("Java".equals(s)){
                list.remove(s);
            }
        }

        System.out.println(list);
    }
}
